# -*- coding: UTF-8 -*-

from django.conf import settings
from django import forms
from django.utils.encoding import smart_unicode
from django.utils.translation import ugettext_lazy as _

from widgets import ReCaptcha
from avanzaweb import captcha
    
class ReCaptchaField(forms.CharField):
     default_error_messages = {
          'captcha_invalid': _(u'Hay un error en las palabras introducidas. Inténtelo de nuevo')
     }

     def __init__(self, *args, **kwargs):
          self.widget = ReCaptcha
          self.required = True
          super(ReCaptchaField, self).__init__(*args, **kwargs)

     def clean(self, values):
          super(ReCaptchaField, self).clean(values[1])
          recaptcha_challenge_value = smart_unicode(values[0])
          recaptcha_response_value = smart_unicode(values[1])
          check_captcha = captcha.submit(recaptcha_challenge_value, recaptcha_response_value, settings.RECAPTCHA_PRIVATE_KEY, {})
          if not check_captcha.is_valid:
               raise forms.util.ValidationError(self.error_messages['captcha_invalid'])
          return values[0]


